package main

import "fmt"

type person struct {
	age int
}

func (p *person) birthday() {
	if p == nil {
		return
	}
	p.age++
}

// 错误值、panic、os.Exit ?
func main() {
	// 为了防止 panic 导致程序崩溃，Go 提供了 recover 函数。
	// 即使发生了 panic ，defer 的动作依旧会在函数返回前执行，。
	// 但如果 defer 的函数调用了 recover，panic 就会停止，程序将继续运行。
	// 类似于 try catch 用法

	a := 0
	b := 10 / a
	fmt.Println(b)
	// 正常会报错
	// 报错之后 的处理逻辑
	defer func() {
		if e := recover(); e != nil {
			fmt.Println("eee")
			fmt.Println(e)
		}
	}()

}
